#    pythonequations is a collection of equations expressed as Python classes
#    Copyright (C) 2008 James R. Phillips
#    2548 Vera Cruz Drive
#    Birmingham, AL 35235 USA
#    email: zunzun@zunzun.com
#
#    License: BSD-style (see LICENSE.txt in main source directory)
#    Version info: $Id: Miscellaneous.py 334 2011-11-27 21:22:21Z zunzun.com $

import pythonequations, pythonequations.EquationBaseClasses, pythonequations.ExtraCodeForEquationBaseClasses
import numpy
numpy.seterr(all = 'raise') # numpy raises warnings, convert to exceptions to trap them


class DavidRodbardNIH_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = False
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "David Rodbard NIH"
    _HTML = "y = d + (a - d) / (1.0 + (x/c)<sup>b</sup>)"
    coefficientDesignatorTuple = ('a', 'b', 'c', 'd')
    function_cpp_code = 'temp = coeff[3] + (coeff[0] - coeff[3]) / (1.0 + pow(_id[_cwo[0]+i] / coeff[2], coeff[1]));'

    webCitationLink = 'http://rsbweb.nih.gov/ij/docs/menus/analyze.html'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a / pow(x_in, b);\n"
        return s



class SimpleReciprocalA2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Reciprocal"
    _HTML = "y = a / x"
    coefficientDesignatorTuple = ("a")
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0] / _id[_cwo[0]+i];'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a / x_in;\n"
        return s



class ParetoA2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Pareto A"
    _HTML = "y = 1 - x<sup>-a</sup>"
    coefficientDesignatorTuple = ("a")
    function_cpp_code = 'temp = 1.0 - pow(_id[_cwo[0]+i], -1.0 * coeff[0]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = 1.0 - pow(x_in, -1.0 * a);\n"
        return s



class ParetoB2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Pareto B"
    _HTML = "y = a(1 - x<sup>-b</sup>)"
    coefficientDesignatorTuple = ("a", 'b')
    function_cpp_code = 'temp = coeff[0] * (1.0 - pow(_id[_cwo[0]+i], -1.0 * coeff[1]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * (1.0 - pow(x_in, -1.0 * b));\n"
        return s



class ParetoC2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Pareto C"
    _HTML = "y = 1.0 - (1.0 / (1 + ax)<SUP>b</SUP>"
    coefficientDesignatorTuple = ("a", 'b')
    function_cpp_code = 'temp = 1.0 - (1.0 / pow(1.0 + coeff[0] * _id[_cwo[0]+i], coeff[1]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = 1.0 - (1.0 / pow(1.0 + a * x_in, b));\n"
        return s



class ParetoD2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Pareto D"
    _HTML = "y = 1.0 - (1.0 / x<SUP>a</SUP>)"
    coefficientDesignatorTuple = ("a")
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = 1.0 - (1.0 / (pow(_id[_cwo[0]+i], coeff[0])));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = 1.0 - (1.0 / (pow(x_in, a)));\n"
        return s



class TransitionStateRateConstantLaw2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Transition State Rate Constant Law"
    _HTML = "y = ax<sup>b</sup> * exp(-c/x)"
    CannotAcceptDataWithZeroX = True
    coefficientDesignatorTuple = ("a", 'b', 'c')
    function_cpp_code = 'temp = coeff[0] * pow(_id[_cwo[0]+i], coeff[1]) * exp(-1.0 * coeff[2] / _id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * pow(x_in, b) * exp(-1.0 * c / x_in, c);\n"
        return s



class ArrheniusRateConstantLawStretched2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Arrhenius Rate Constant Law Stretched"
    _HTML = "y = a * exp(-pow(b/x, c))"
    CannotAcceptDataWithZeroX = True
    coefficientDesignatorTuple = ("a", 'b', 'c')
    function_cpp_code = 'temp = coeff[0] * exp(-1.0 * pow(coeff[1] / _id[_cwo[0]+i], coeff[2]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * exp(-1.0 * pow(b / x_in, c));\n"
        return s



class ArrheniusRateConstantLaw2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Arrhenius Rate Constant Law"
    _HTML = "y = a * exp(-b/x)"
    CannotAcceptDataWithZeroX = True
    coefficientDesignatorTuple = ("a", 'b')
    function_cpp_code = 'temp = coeff[0] * exp(-1.0 * coeff[1] / _id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * exp(-1.0 * b / x_in);\n"
        return s



class Polytrope2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Polytrope"
    _HTML = "y = a / x<sup>b</sup>"
    coefficientDesignatorTuple = ("a", 'b')
    function_cpp_code = 'temp = coeff[0] / pow(_id[_cwo[0]+i], coeff[1]);'

    webCitationLink = 'http://planetmath.org/encyclopedia/Polytrope.html'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a / pow(x_in, b);\n"
        return s



class PolytropeTransform2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Polytrope Transform"
    _HTML = "y = a / (cx + d)<sup>b</sup>"
    coefficientDesignatorTuple = ("a", 'b', 'c', 'd')
    function_cpp_code = 'temp = coeff[0] / pow(coeff[2] * _id[_cwo[0]+i] + coeff[3], coeff[1]);'

    webCitationLink = 'http://planetmath.org/encyclopedia/Polytrope.html'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a / pow(c * x_in + d, b);\n"
        return s



class Catenary2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Catenary"
    _HTML = "y = a * cosh(x / a)"
    coefficientDesignatorTuple = ("a")
    function_cpp_code = 'temp = coeff[0] / cosh(_id[_cwo[0]+i] / coeff[0]);'

    webCitationLink = 'http://planetmath.org/encyclopedia/Catenary.html'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * cosh(x_in / a);\n"
        return s



class CatenaryTransform2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Catenary Transform"
    _HTML = "y = a * cosh((bx + c) / a)"
    coefficientDesignatorTuple = ("a", 'b', 'c')
    function_cpp_code = 'temp = coeff[0] / cosh((coeff[1] * _id[_cwo[0]+i] + coeff[2]) / coeff[0]);'

    webCitationLink = 'http://planetmath.org/encyclopedia/Catenary.html'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * cosh((b * x_in + c) / a);\n"
        return s



class LamesCubic2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Lame's Cubic"
    _HTML = "y = (a<sup>3</sup> - x<sup>3</sup>)<sup>1/3</sup>"
    coefficientDesignatorTuple = ("a")
    function_cpp_code = 'temp = pow(pow(coeff[0], 3.0) - _id[_cwo[0]+i], 1.0 / 3.0);'

    webCitationLink = 'http://planetmath.org/encyclopedia/AsymptoteOfLamesCubic.html'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[3.0]), [3.0]])

    def SpecificCodeCPP(self):
        s = "\ttemp = pow(pow(a, 3.0) - pow(x_in, 3.0), 1.0 / 3.0);\n"
        return s



class LamesCubicTransform2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Lame's Cubic Transform"
    _HTML = "y = (a<sup>3</sup> - (bx + c)<sup>3</sup>)<sup>1/3</sup>"
    coefficientDesignatorTuple = ("a", 'b', 'c')
    function_cpp_code = 'temp = pow(pow(coeff[0], 3.0) - pow(coeff[1] * _id[_cwo[0]+i] + coeff[2], 3.0), 1.0 / 3.0);'

    webCitationLink = 'http://planetmath.org/encyclopedia/AsymptoteOfLamesCubic.html'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = pow(pow(a, 3.0) - pow(b * x_in + c, 3.0), 1.0 / 3.0);\n"
        return s



class Gunary2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Gunary"
    _HTML = "y = x / (a + bx + cx<sup>0.5</sup>)"
    coefficientDesignatorTuple = ("a", "b", "c")
    CannotAcceptDataWithNegativeX = True
    function_cpp_code = 'temp = _id[_cwo[0]+i] / (coeff[0] + coeff[1] * _id[_cwo[0]+i] + coeff[2] * _id[_cwo[1]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[0.5]), [0.5]])

    def SpecificCodeCPP(self):
        s = "\ttemp = x_in / (a + b * x_in + pow(x_in, 0.5));\n"
        return s



class Nelder2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Nelder"
    _HTML = "y = (a + x) / (b + c(a + x) + d(a + x)<sup>2</sup>"
    coefficientDesignatorTuple = ("a", "b", "c", 'd')
    function_cpp_code = 'temp = (coeff[0] + _id[_cwo[0]+i]) / (coeff[1] + coeff[2] * (coeff[0] + _id[_cwo[0]+i]) + coeff[3] * pow(coeff[0] + _id[_cwo[0]+i], 2.0));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = (a + x_in) / (b + c * (a + x_in) + d * (a + x_in) * (a + x_in));\n"
        return s



class RectangularHyperbolaA2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Rectangular Hyperbola A"
    _HTML = "y = ax/(b+x)"
    coefficientDesignatorTuple = ("a", "b")
    function_cpp_code = 'temp = coeff[0] * _id[_cwo[0]+i] / (coeff[1] + _id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * x_in / (b + x_in);\n"
        return s



class RectangularHyperbolaB2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Rectangular Hyperbola B"
    _HTML = "y = ax/(b+x) + cx"
    coefficientDesignatorTuple = ("a", "b", 'c')
    function_cpp_code = 'temp = coeff[0] * _id[_cwo[0]+i] / (coeff[1] + _id[_cwo[0]+i]) + coeff[2] + _id[_cwo[0]+i];'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * x_in / (b + x_in) + c * x_in;\n"
        return s



class DoubleRectangularHyperbolaA2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Double Rectangular Hyperbola A"
    _HTML = "y = ax/(b+x) + cx/(d+x)"
    coefficientDesignatorTuple = ("a", "b", 'c', 'd')
    function_cpp_code = 'temp = (coeff[0] * _id[_cwo[0]+i] / (coeff[1] + _id[_cwo[0]+i])) + (coeff[2] * _id[_cwo[0]+i] / (coeff[3] + _id[_cwo[0]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = (a * x_in / (b + x_in)) + (c * x_in / (d + x_in));\n"
        return s



class DoubleRectangularHyperbolaB2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Double Rectangular Hyperbola B"
    _HTML = "y = ax/(b+x) + cx/(d+x) + fx"
    coefficientDesignatorTuple = ("a", "b", 'c', 'd', 'f')
    function_cpp_code = 'temp = (coeff[0] * _id[_cwo[0]+i] / (coeff[1] + _id[_cwo[0]+i])) + (coeff[2] * _id[_cwo[0]+i] / (coeff[3] + _id[_cwo[0]+i])) + coeff[4] * _id[_cwo[0]+i];'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = (a * x_in / (b + x_in)) + (c * x_in / (d + x_in)) + (f * x_in);\n"
        return s



class HyperbolicDecay2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Hyperbolic Decay"
    _HTML = "y = ab/(b+x)"
    coefficientDesignatorTuple = ("a", "b")
    function_cpp_code = 'temp = coeff[0] * coeff[1] / (coeff[1] + _id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * b / (b + x_in);\n"
        return s



class HyperbolaA_Modified2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Hyperbola A Modified"
    _HTML = "y = ax/(1+bx)"
    coefficientDesignatorTuple = ("a", "b")
    function_cpp_code = 'temp = coeff[0] * _id[_cwo[0]+i] / (1.0 + coeff[1] * _id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * x_in / (1.0 + b * x_in);\n"
        return s



class HyperbolaB_Modified2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Hyperbola B Modified"
    _HTML = "y = x/(a+bx)"
    coefficientDesignatorTuple = ("a", "b")
    function_cpp_code = 'temp = _id[_cwo[0]+i] / (coeff[0] + coeff[1] * _id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = x_in / (a + b * x_in);\n"
        return s



class Bleasdale_Nelder2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Bleasdale-Nelder"
    _HTML = "y = (a + bx)<sup>-1/c</sup>"
    coefficientDesignatorTuple = ("a", "b", "c")
    function_cpp_code = 'temp = pow(coeff[0] + coeff[1] * _id[_cwo[0]+i], -1.0 / coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = pow(a + b * x_in, -1.0 / c);\n"
        return s



class Bleasdale_Nelder_Power2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Bleasdale-Nelder Power"
    _HTML = "y = (a + bx<sup>c</sup>)<sup>-1/d</sup>"
    coefficientDesignatorTuple = ("a", "b", "c", 'd')
    function_cpp_code = 'temp = pow(coeff[0] + coeff[1] * pow(_id[_cwo[0]+i], coeff[2]), -1.0 / coeff[3]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = pow(a + b * pow(x_in, c), -1.0 / d);\n"
        return s



class CombinedPowerAndExponential2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Combined Power And Exponential"
    _HTML = "y = ax<sup>b</sup> * exp(cx)"
    coefficientDesignatorTuple = ("a", "b", "c")
    function_cpp_code = 'temp = coeff[0] * pow(_id[_cwo[0]+i], coeff[1]) * exp(coeff[2] * _id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * pow(x_in, b) * exp(c * x_in);\n"
        return s



class Serpentine2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Serpentine"
    _HTML = "y = ax / (1.0 + bx<sup>2</sup>)"
    coefficientDesignatorTuple = ('a', 'b')
    function_cpp_code = 'temp = coeff[0] * _id[_cwo[0]+i] / (1.0 + coeff[1] * _id[_cwo[1]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[2.0]), [2.0]])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * x_in / (1.0 + b * x_in * x_in);\n"
        return s



class WitchOfAgnesiA2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Witch Of Maria Agnesi A"
    _HTML = "y = 8a<sup>3</sup> / (x<sup>2</sup> + 4a<sup>2</sup>)"
    coefficientDesignatorTuple = ("a")
    function_cpp_code = 'temp = 8.0 * pow(coeff[0], 3.0) / (_id[_cwo[0]+i] + 4.0 * coeff[0] * coeff[0]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[2.0]), [2.0]])

    def SpecificCodeCPP(self):
        s = "\ttemp = 8.0 * a * a * a / (x_in * x_in + 4.0 * a * a);\n"
        return s



class WitchOfAgnesiB2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Witch Of Maria Agnesi B"
    _HTML = "y = a<sup>3</sup> / (x<sup>2</sup> + a<sup>2</sup>)"
    coefficientDesignatorTuple = ("a")
    function_cpp_code = 'temp = pow(coeff[0], 3.0) / (_id[_cwo[0]+i] + coeff[0] * coeff[0]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[2.0]), [2.0]])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * a * a / (x_in * x_in + a * a);\n"
        return s



class WitchOfAgnesiC2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Witch Of Maria Agnesi C"
    _HTML = "y = a<sup>3</sup> / ((x * b + c)<sup>2</sup> + a<sup>2</sup>)"
    coefficientDesignatorTuple = ("a", "b", "c")
    function_cpp_code = 'temp = pow(coeff[0], 3.0) / (pow(_id[_cwo[0]+i] * coeff[1] + coeff[2], 2.0) + coeff[0] * coeff[0]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * a * a / ((x_in * b + c) * (x_in * b + c) + a * a);\n"
        return s



class PursuitCurve2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Pursuit Curve"
    _HTML = "y = ax<sup>2</sup> - log(x)"
    coefficientDesignatorTuple = ("a")
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    function_cpp_code = 'temp = (coeff[0] * _id[_cwo[0]+i]) - _id[_cwo[1]+i];'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[2.0]), [2.0]])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_LogX(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = 1.0 / (a - x_in);\n"
        return s



class PursuitCurve_Transform2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Pursuit Curve Transform"
    _HTML = "y = a(bx + c)<sup>2</sup> - log(bx + c)"
    coefficientDesignatorTuple = ("a", 'b', 'c')
    function_cpp_code = 'temp = (coeff[0] * pow(coeff[1] * _id[_cwo[0]+i] + coeff[2], 2.0)) - log(coeff[1] * _id[_cwo[0]+i] + coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = (a * pow(b * x_in + c, 2.0)) - log(b * x_in + c);\n"
        return s



class Square_Modified2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Square Modified"
    _HTML = "y = x<sup>2</sup> - ax"
    coefficientDesignatorTuple = ("a")
    function_cpp_code = 'temp = _id[_cwo[1]+i] - (coeff[0] * _id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_PowX(NameOrValueFlag=1, args=[2.0]), [2.0]])

    def SpecificCodeCPP(self):
        s = "\ttemp = (x_in * x_in) - (a * x_in);\n"
        return s



class Square_Modified_Transform2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Square Modified Transform"
    _HTML = "y = (bx + c)<sup>2</sup> - a(bx + c)"
    coefficientDesignatorTuple = ("a", 'b', 'c')
    function_cpp_code = 'temp = pow(coeff[1] * _id[_cwo[0]+i] + coeff[2], 2.0) - (coeff[0] * (coeff[1] * _id[_cwo[0]+i] + coeff[2]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = pow(b * x_in + c, 2.0) - (a * (b * x_in + c));\n"
        return s



class ShiftedReciprocal2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Shifted Reciprocal"
    _HTML = "y = 1.0 / (a - x)"
    coefficientDesignatorTuple = ("a")
    function_cpp_code = 'temp = 1.0 / (coeff[0] - _id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = 1.0 / (a - x_in);\n"
        return s



class Misc12D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Miscellaneous 1"
    _HTML = "y = 1.0 + a(1.0 - exp(bx))"
    coefficientDesignatorTuple = ("a", "b")
    function_cpp_code = 'temp = 1.0 + coeff[0] * (1.0 - exp(coeff[1] * _id[_cwo[0]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_Ones(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = 1.0 + a * (1.0 - exp(b * x_in));\n"
        return s



class DoubleLangmuirProbeCharacteristic2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = True
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Double Langmuir Probe Characteristic"
    _HTML = "y = a(tanh(bx+c))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0] * (tanh((coeff[1] * _id[_cwo[0]+i]) + coeff[2]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a * (tanh((b * x_in) + c));\n"
        return s



class Simple_Equation_01_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = False
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 01"
    _HTML = "y = a"
    coefficientDesignatorTuple = ('a')
    function_cpp_code = 'temp = coeff[0];'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a;\n"
        return s



class Simple_Equation_02_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 02"
    _HTML = "y = a/pow(x,2.0)"
    coefficientDesignatorTuple = ('a')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]/pow(_id[_cwo[0]+i],2.0);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a/pow(x_in,2.0);\n"
        return s



class Simple_Equation_03_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 03"
    _HTML = "y = a*pow(ln(x),b)"
    coefficientDesignatorTuple = ('a', 'b')
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    function_cpp_code = 'temp = coeff[0]*pow(log(_id[_cwo[0]+i]),coeff[1]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(ln(x_in),b);\n"
        return s



class Simple_Equation_04_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 04"
    _HTML = "y = a*pow(x,3.0)"
    coefficientDesignatorTuple = ('a')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],3.0);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,3.0);\n"
        return s



class Simple_Equation_05_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 05"
    _HTML = "y = a*pow(x,4.0)"
    coefficientDesignatorTuple = ('a')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],4.0);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,4.0);\n"
        return s



class Simple_Equation_06_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 06"
    _HTML = "y = x/(a+b*pow(x,2.0))"
    coefficientDesignatorTuple = ('a', 'b')
    function_cpp_code = 'temp = _id[_cwo[0]+i]/(coeff[0]+coeff[1]*pow(_id[_cwo[0]+i],2.0));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = x_in/(a+b*pow(x_in,2.0));\n"
        return s



class Simple_Equation_07_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 07"
    _HTML = "y = a*pow(b,x)*pow(x,c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(coeff[1],_id[_cwo[0]+i])*pow(_id[_cwo[0]+i],coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(b,x_in)*pow(x_in,c);\n"
        return s



class Simple_Equation_08_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 08"
    _HTML = "y = a*pow(b,1.0/x)*pow(x,c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]*(pow(coeff[1],1.0/_id[_cwo[0]+i]))*pow(_id[_cwo[0]+i],coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*(pow(b,1.0/x_in))*pow(x_in,c);\n"
        return s



class Simple_Equation_09_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 09"
    _HTML = "y = a*exp(pow(x-b,2.0)/c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*exp((pow(_id[_cwo[0]+i]-coeff[1],2.0))/coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*exp((pow(x_in-b,2.0))/c);\n"
        return s



class Simple_Equation_10_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 10"
    _HTML = "y = a*exp(pow(ln(x)-b,2.0)/c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    function_cpp_code = 'temp = coeff[0]*exp((pow(log(_id[_cwo[0]+i])-coeff[1],2.0))/coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*exp((pow(ln(x_in)-b,2.0))/c);\n"
        return s



class Simple_Equation_11_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 11"
    _HTML = "y = a*pow(x,b)*pow(1.0-x,c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1])*pow(1.0-_id[_cwo[0]+i],coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b)*pow(1.0-x_in,c);\n"
        return s



class Simple_Equation_13_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 13"
    _HTML = "y = a*pow(x/b,c)*exp(x/b)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i]/coeff[1],coeff[2])*exp(_id[_cwo[0]+i]/coeff[1]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in/b,c)*exp(x_in/b);\n"
        return s



class Simple_Equation_14_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 14"
    _HTML = "y = a*pow(x,b+c*x)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]+coeff[2]*_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b+c*x_in);\n"
        return s



class Simple_Equation_15_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 15"
    _HTML = "y = a*pow(x,b+c/x)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]+coeff[2]/_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b+c/x_in);\n"
        return s



class Simple_Equation_16_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 16"
    _HTML = "y = a*pow(x,b+c*ln(x))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]+coeff[2]*log(_id[_cwo[0]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b+c*ln(x_in));\n"
        return s



class Simple_Equation_17_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 17"
    _HTML = "y = a*pow(x,b*x+c*pow(x,2.0))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]*_id[_cwo[0]+i]+coeff[2]*pow(_id[_cwo[0]+i],2.0));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b*x_in+c*pow(x_in,2.0));\n"
        return s



class Simple_Equation_18_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 18"
    _HTML = "y = a*exp(b*x+c*pow(x,0.5))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*exp(coeff[1]*_id[_cwo[0]+i]+coeff[2]*pow(_id[_cwo[0]+i],0.5));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*exp(b*x_in+c*pow(x_in,0.5));\n"
        return s



class Simple_Equation_19_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 19"
    _HTML = "y = a*exp(b/x+c*x)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]*exp(coeff[1]/_id[_cwo[0]+i]+coeff[2]*_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*exp(b/x_in+c*x_in);\n"
        return s



class Simple_Equation_20_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 20"
    _HTML = "y = (a+x)/(b+c*x)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = (coeff[0]+_id[_cwo[0]+i])/(coeff[1]+coeff[2]*_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = (a+x_in)/(b+c*x_in);\n"
        return s



class Simple_Equation_21_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 21"
    _HTML = "y = (a+x)/(b+c*pow(x,2.0))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = (coeff[0]+_id[_cwo[0]+i])/(coeff[1]+coeff[2]*pow(_id[_cwo[0]+i],2.0));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = (a+x_in)/(b+c*pow(x_in,2.0));\n"
        return s



class Simple_Equation_22_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 22"
    _HTML = "y = a*(exp(b*x)-exp(c*x))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*(exp(coeff[1]*_id[_cwo[0]+i])-exp(coeff[2]*_id[_cwo[0]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*(exp(b*x_in)-exp(c*x_in));\n"
        return s



class Simple_Equation_23_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 23"
    _HTML = "y = a*exp(b*exp(c*x))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*exp(coeff[1]*exp(coeff[2]*_id[_cwo[0]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*exp(b*exp(c*x_in));\n"
        return s



class Simple_Equation_24_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 24"
    _HTML = "y = a/(1.0 + b * exp(c*x))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]/(1.0+coeff[1]*exp(coeff[2]*_id[_cwo[0]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a/(1.0+b*exp(c*x_in));\n"
        return s



class Simple_Equation_25_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 25"
    _HTML = "y = a/(b+pow(x,c))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]/(coeff[1]+pow(_id[_cwo[0]+i],coeff[2]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a/(b+pow(x_in,c));\n"
        return s



class Simple_Equation_26_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 26"
    _HTML = "y = a/pow(1.0 + b * pow(x,c),2.0)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]/pow(1.0+coeff[1]*pow(_id[_cwo[0]+i],coeff[2]),2.0);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a/pow(1.0+b*pow(x_in,c),2.0);\n"
        return s



class Simple_Equation_27_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 27"
    _HTML = "y = pow(a+b*x,c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = pow(coeff[0]+coeff[1]*_id[_cwo[0]+i],coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = pow(a+b*x_in,c);\n"
        return s



class Simple_Equation_28_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 28"
    _HTML = "y = exp(a+b/x+c*ln(x))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    function_cpp_code = 'temp = exp(coeff[0]+coeff[1]/_id[_cwo[0]+i]+coeff[2]*log(_id[_cwo[0]+i]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = exp(a+b/x_in+c*ln(x_in));\n"
        return s



class Simple_Equation_29_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 29"
    _HTML = "y = a*exp(b*pow(x,c))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*exp(coeff[1]*pow(_id[_cwo[0]+i],coeff[2]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*exp(b*pow(x_in,c));\n"
        return s



class Simple_Equation_30_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 30"
    _HTML = "y = a*pow(x,b*pow(x,c))"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]*pow(_id[_cwo[0]+i],coeff[2]));'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b*pow(x_in,c));\n"
        return s



class Simple_Equation_31_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 31"
    _HTML = "y = a*ln(x+b)"
    coefficientDesignatorTuple = ('a', 'b')
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    function_cpp_code = 'temp = coeff[0]*log(_id[_cwo[0]+i]+coeff[1]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*ln(x_in+b);\n"
        return s



class Simple_Equation_32_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 32"
    _HTML = "y = a/x+b*pow(x,c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]/_id[_cwo[0]+i]+coeff[1]*pow(_id[_cwo[0]+i],coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a/x_in+b*pow(x_in,c);\n"
        return s



class Simple_Equation_33_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 33"
    _HTML = "y = a/x+b*exp(c/x)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]/_id[_cwo[0]+i]+coeff[1]*exp(coeff[2]/_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a/x_in+b*exp(c/x_in);\n"
        return s



class Simple_Equation_34_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 34"
    _HTML = "y = a/x+b*exp(c*x)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]/_id[_cwo[0]+i]+coeff[1]*exp(coeff[2]*_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a/x_in+b*exp(c*x_in);\n"
        return s



class Simple_Equation_35_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 35"
    _HTML = "y = a*exp(b*x)/x"
    coefficientDesignatorTuple = ('a', 'b')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]*exp(coeff[1]*_id[_cwo[0]+i])/_id[_cwo[0]+i];'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*exp(b*x_in)/x_in;\n"
        return s



class Simple_Equation_36_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 36"
    _HTML = "y = a*exp(b/x)/x"
    coefficientDesignatorTuple = ('a', 'b')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]*exp(coeff[1]/_id[_cwo[0]+i])/_id[_cwo[0]+i];'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*exp(b/x_in)/x_in;\n"
        return s



class Simple_Equation_37_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 37"
    _HTML = "y = a*pow(x,b)*ln(x)"
    coefficientDesignatorTuple = ('a', 'b')
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1])*log(_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b)*ln(x_in);\n"
        return s



class Simple_Equation_38_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = False
    RequiresAutoGeneratedInverseForms = False
    _name = "Simple Equation 38"
    _HTML = "y = a*pow(x,b)/ln(x)"
    coefficientDesignatorTuple = ('a', 'b')
    CannotAcceptDataWithZeroX = True
    CannotAcceptDataWithNegativeX = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1])/log(_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b)/ln(x_in);\n"
        return s



class Simple_Equation_39_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 39"
    _HTML = "y = a*pow(x,b)*ln(x+c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1])*log(_id[_cwo[0]+i]+coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b)*ln(x_in+c);\n"
        return s



class Simple_Equation_40_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 40"
    _HTML = "y = a*pow(ln(x+b),c)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    function_cpp_code = 'temp = coeff[0]*pow(log(_id[_cwo[0]+i]+coeff[1]),coeff[2]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(ln(x_in+b),c);\n"
        return s



class Simple_Equation_41_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 41"
    _HTML = "y = a*pow(x,b/x)+c*x"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]/_id[_cwo[0]+i])+coeff[2]*_id[_cwo[0]+i];'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b/x_in)+c*x_in;\n"
        return s



class Simple_Equation_42_2D(pythonequations.EquationBaseClasses.Equation2D):
    RequiresAutoGeneratedGrowthAndDecayForms = False
    RequiresAutoGeneratedOffsetForm = True
    RequiresAutoGeneratedReciprocalForm = True
    RequiresAutoGeneratedInverseForms = True
    _name = "Simple Equation 42"
    _HTML = "y = a*pow(x,b/x)+c*ln(x)"
    coefficientDesignatorTuple = ('a', 'b', 'c')
    CannotAcceptDataWithZeroX = True
    function_cpp_code = 'temp = coeff[0]*pow(_id[_cwo[0]+i],coeff[1]/_id[_cwo[0]+i])+coeff[2]*log(_id[_cwo[0]+i]);'


    def CreateCacheGenerationList(self):
        self.CacheGenerationList = []
        self.CacheGenerationList.append([pythonequations.ExtraCodeForEquationBaseClasses.CG_X(NameOrValueFlag=1), []])

    def SpecificCodeCPP(self):
        s = "\ttemp = a*pow(x_in,b/x_in)+c*ln(x_in);\n"
        return s



